import {defineConfig, loadEnv} from 'vite'
import vue from '@vitejs/plugin-vue'
import legacy from "@vitejs/plugin-legacy";
import basicSsl from "@vitejs/plugin-basic-ssl";
import path from "node:path";

// https://vitejs.dev/config/
export default defineConfig(({command, mode}) => {
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
  const env = loadEnv(mode, process.cwd(), '')
  
  const proxyTarget = env.VITE_API_CONTEXT_PATH
    ? env.VITE_API_CONTEXT_PATH
    : "/";
  
  // plugin-legacy为打包后的文件提供传统浏览器兼容性支持
  // plugin-basic-ssl为https生成不受信任的证书，该证书在经过警告后仍然允许访问页面
  const plugins = [legacy(), vue()];
  if (env.VITE_DEV_HTTPS === "true") {
    plugins.push(basicSsl());
  }
  
  return {
    plugins: plugins,
    base: "./", // 前端公共基础路径
    resolve: {
      alias: { // 文件系统路径别名
        '@': path.resolve('./src')
      }
    },
    server: { // 开发服务器配置
      host: true, // 服务器监听所有IP地址，包括局域网和公网地址
      proxy: { // 服务器自定义代理规则。key开头的请求将被代理到目标服务器
        [proxyTarget]: {
          target: env.VITE_DEV_SERVER_TARGET,
        },
      },
    },
  }
})